Cette dépêche propose de passer en revue un des ateliers du hackerspace L@Bx concernant l’oscilloscope numérique : son bon usage & son utilité. Un oscilloscope est un appareil qui mesure une tension par rapport au temps. C’est l’outil indispensable de l’électronicien, il permet de visualiser l’allure d’un signal :
- une commande de servomoteur ;
- une trame UART ;
- etc.
Après quelques rappels de base en électricité, nous verrons dans cet article comment fonctionne un oscilloscope numérique et quelques cas d’utilisation de recherche d’erreurs dans une carte Arduino.
Sommaire
-
Les ateliers du L@Bx — 1 - l’oscilloscope numérique
- Rappel de quelques bases sur la physique : tension, courant, loi d’Ohm et fréquence
- Qu’est‐ce qu’une tension ?
- Qu’est‐ce que le courant ?
- La loi d’Ohm ?
- Signal quoi ? (périodique)
- Signal non périodique
- Oscilloscope numérique
- Utilisation de l’oscilloscope pour mesurer un signal
- Rappel sur les bus de communication UART, I2C et SPI
- Pour conclure
Les ateliers du L@Bx — 1 - l’oscilloscope numérique
Rappel de quelques bases sur la physique : tension, courant, loi d’Ohm et fréquence
Qu’est‐ce qu’une tension ?
La tension c’est une différence entre deux potentiels. C’est une valeur qui est imposée par les composants (voir leurs spécifications) : moins ça ne fonctionne pas, trop ça crame.
Qu’est‐ce que le courant ?
Le courant électrique est par analogie comme le débit d’eau. Il se mesure en Ampère (A) à l’aide d’un ampèremètre ou multimètre. Il correspond au nombre de charges électriques circulant dans la section d’un fil électrique par seconde ; ce qui correspondrait par analogie au nombre de voitures circulant pendant une seconde sur une section d’autoroute.
Contrairement à la tension, nous ne pouvons pas contrôler le courant, le courant est imposé par le circuit, comme la charge d’un moteur ou la taille de la SDRAM dans notre µC.
La loi d’Ohm ?
Donc dans un montage, nous avons une valeur que nous contrôlons, la tension. Et une valeur imposée par le circuit, le courant. Si on réalise le rapport entre la tension et le courant, nous avons la charge R que l’on exprime en ohms.
Et voici La LOI électrique qui fait tout : la loi d’Ohm, soit : U = R × I
Signal quoi ? (périodique)
Un signal périodique est un signal composé d’un motif qui se répète sur un temps donné.
Quelques exemples de signaux périodiques :
Permet de commander la vitesse d’un moteur à courant continu en faisant varier la tension moyenne du moteur.
Commande de servomoteur, la largeur de l’impulsion détermine l’angle de la commande.
Signal non périodique
Nous avons aussi des signaux non périodiques comme :
- les rebonds d’un capteur de fin de course :
- consommation de l’Arduino ;
- trame de communication série ;
- mesure analogique d’un capteur ;
- etc.
Oscilloscope numérique
Fonctionnement
Un oscilloscope numérique dispose d’un convertisseur analogique‐numérique, qui convertit le signal analogique en valeur numérique. Cette valeur numérique est stockée dans une mémoire. L’ensemble des données stockées est l’image numérique du signal. Ensuite, il nous faut un moyen de visualiser cette mémoire, comme un écran ou une interface USB qui se connecte à un PC.
Modes de Fonctionnement
Mode continu
L’oscilloscope enregistre en continu le signal ; quand la zone mémoire est pleine l’enregistrement recommence au début. Ce mode est parfait pour les signaux périodiques.
Mode Stockage
Dans ce mode l’oscilloscope enregistre le signal et s’arrête quand sa mémoire est pleine. Ce mode est parfait pour les signaux non périodiques.
Utilisation de l’oscilloscope pour mesurer un signal
Le trigger
Le trigger (déclencheur) est un composant fondamental de tous les oscilloscopes. Il permet le déclenchement de l’acquisition du signal sur un événement :
- vous choisissez la voie 1, 2, 3 ou 4 ;
- vous choisissez le type d’événement front montant ou front descendant ;
- vous réglez le seuil de déclenchement.
Le PWM de l’arduino
La fréquence du PWM est de 100 Hz, la tension max est de 5 V.
Réglage du l’oscilloscope :
- base de temps de 2 ms par division, pour avoir deux périodes à l’écran ;
- sensibilité verticale d’1 V par division ;
- trigger détection du front montant, déclenchement à 1 V.
Comment mesurer un courant
Un oscilloscope mesure une tension, comment mesurer un courant simplement ? Il y a une relation entre le courant et la tension il s’agit de loi d’Ohms : U = R × I
. Dans votre montage, en ajoutant une résistance précise de faible valeur et en mesurant la tension aux bornes de la résistance, vous obtiendrez l’image du courant.
fonction XY de l’oscilloscope
On peut visualiser un signal par rapport au temps ou par rapport à un autre signal. Ce mode permet de tracer une caractéristique du courant, la tension d’un composant ou de tracer un déphasage de deux signaux.
Rappel sur les bus de communication UART, I2C et SPI
UART
L’UART est une méthode de communication point à point, utilisée par les MODEM 56k connectés sur la prise DB-9 de nos ordinosaure.
Mais cette méthode est encore très utilisée :
- la communication entre Arduino et PC ;
- le port de débogage de cartes Linux embarquées, comme la RPI ;
- le port de débogage des box.
L’UART a quatre paramètres :
- le baud rate, nombre de bits par seconde ;
- le nombre de bits de stop (1, 1.5 ou 2) ;
- la parité (0, 1 ou pas de parité) ;
- le nombre de bits de données : 7 ou 8.
Dans la très grande majorité des cas (personnellement, je n’ai pas trouvé d’autre cas) :
- il y a 8 bits de données ;
- pas de bit de parité ;
- 1 bit de stop ;
- le baud rate varie entre 9 600 bauds et 115 200 bauds.
Avec un oscilloscope, on peut déterminer cette vitesse.
Temps de transmission d'un bit
Mesurer le temps de transmission du plus petit bit, s’il mesure 104 µs
le baud rate est de 1/104 µs, soit 9600 bauds.
Utilisation de l’oscilloscope pour écouter deux Arduino discuter
Vous pouvez faire discuter deux Arduino ensemble avec leurs UART. ATTENTION, n’utilisez pas le moniteur série de l’IDE d’Arduino !
- Connecter le TX d'un Arduino sur le RX de l'autre
- Connecter le RX sur le TX de l'autre
- Connecter une sonde de l’oscilloscope sur le TX
- Connecter une sonde de l’oscilloscope sur le RX
- et
écoutervisualiser …
I²C
Le bus I²C est un bus de communication inventé par Philips. Le bus est composé de trois fils : un fil pour l’horloge (SCL), un fil pour les données (SDA) et un fil pour la masse (ground).
Le fil qui transporte l’horloge est ce qui permet de fixer la vitesse de communication de votre bus I²C. Il est imposé par le maître ; oui, car l’I²C est un bus de communication de type maître‐esclave, avec la possibilité d’avoir plusieurs maîtres.
Il est massivement utilisé même dans votre ordinateur. Il est extrêmement pratique pour faire de la mesure avec des capteurs car, avec seulement trois fils, nous pouvons avoir une centaine de capteurs.
Les capteurs I²C ont obligatoirement un microcontrôleur qui se charge de convertir le signal analogique de la mesure en signal numérique transférable par bus I²C. Un capteur ne peut pas émettre d’alerte, il doit attendre une requête du maître. Ce bus est assez lent, il n’est pas adapté pour faire des gros transferts.
Recherche d’erreurs
Si votre Arduino n’arrive pas à lire votre capteur de pression ou si les valeurs sont aberrantes, vous pouvez, avec l’oscilloscope, visualiser la trame émise. La procédure est de :
- connecter une sonde sur le fil SDA ;
- connecter une sonde sur le fil SCL ;
- mettre un trigger front descendant sur le SDA ;
- vérifier si la trame émise correspond à la trame programmée :
SPI
Le SPI est un bus maître‐esclave, composé de trois fils, plus un fil par esclave. L’adressage des esclaves est réalisé par un signal électrique. Pour chaque esclave, nous avons quatre fils :
- SCLK — Serial Clock, horloge (généré par le maître) ;
- MOSI — Master Output, Slave Input (généré par le maître) ;
- MISO — Master Input, Slave Output (généré par l’esclave) ;
- SS — Slave Select, actif à l’état bas (généré par le maître).
Et pour le maître nous avons :
- SCLK ;
- MOSI ;
- MISO ;
- nombre d’esclaves × SS.
Le SPI permet des transferts plus rapides, on l’utilise pour connecter de la mémoire vive à des microcontrôleurs. Mais, pour chaque esclave, nous devons ajouter un fil supplémentaire et utiliser des GPIO en plus.
Il y a une petite technique pour optimiser le nombre de GPIO à utiliser, nous pouvons utiliser un démultiplexeur ou décodeur d’adresses :
- pour 2 GPIO, nous pouvons adresser 4 esclaves ;
- pour 3 GPIO, nous pouvons adresser 8 esclaves ;
- etc.
Recherche d’erreurs
Si votre Arduino n’arrive pas à lire votre capteur de pression ou si les valeurs sont aberrantes, vous pouvez, avec l’oscilloscope, visualiser la trame émise. Il faut :
- connecter une sonde sur le fil MOSI ;
- connecter une sonde sur le fil MISO ;
- connecter une sonde sur le fil SCLK ;
- connecter une sonde sur le fil SS ;
- mettre un trigger front descendant sur le SS correspondant à votre capteur ;
- vérifier si la trame émise correspond à la trame programmée.
Pour conclure
Un oscilloscope est un outil vraiment très utile, voire indispensable si l’on souhaite progresser en électronique et systèmes embarqués. Mais, c’est un investissement, de 50 € à… ouh là là !…
Pour écouter des trames série vous pouvez utiliser le bus pirate, un très bon projet à matériel libre. Vous pouvez aussi vous fabriquer un oscilloscope avec votre carte son. Eh oui, la carte son est un convertisseur analogique numérique, mais vous ne pourrez pas visualiser des signaux qui ont une fréquence supérieure à 44 kHz.
Aller plus loin
- L@Bx (512 clics)
# Analyseur logique
Posté par Olivier Esver (site web personnel) . Évalué à 8.
En plus du Bus Pirate, il y a aussi l'Open Bench Logic Sniffer chez dangerous prototypes, il est assez utile pour analyser des trames.
D’ailleurs, pourrais tu me donner le modèle de ton oscillo à 50€ ?
S'il y a un problème, il y a une solution; s'il n'y a pas de solution, c'est qu'il n'y a pas de problème.
[^] # Re: Analyseur logique
Posté par jmax17 . Évalué à 4.
J'ai un miniDSO une voie que j'ai pus avoir à 50€
il a une bande passante 10-15Mhz je ne suis pas certain de ça précision (je pourrais le tester avec le rigol)
mais je peux avoir un scope qui dépanne dans ma sacoche de portable :)
[^] # Re: Analyseur logique
Posté par Olivier Esver (site web personnel) . Évalué à 4.
Ok,
Car en dessous des 200€ j'avais vu : BitScope ou un picoscope dont un journal en parle.
S'il y a un problème, il y a une solution; s'il n'y a pas de solution, c'est qu'il n'y a pas de problème.
[^] # Re: Analyseur logique
Posté par Pierre Jarillon (site web personnel) . Évalué à 4.
Je possède un minidso DS203 comme celui que l'on peut voir sur
https://www.youtube.com/watch?v=HKRLoELTP0A
https://www.youtube.com/watch?v=Qk_3QGTUsF8
Une recherche avec « Oscilloscope DS203 » pourra vous en dire plus.
La conception, le schéma et le logiciel sont libres. Les chinois le réalisent pour un tout petit prix.
Je l'ai commandé sur internet, le paquet est arrivé directement de Chine.
[^] # Re: Analyseur logique
Posté par Aeris (site web personnel) . Évalué à 1.
Je veux bien le modèle aussi, parce qu’à moins de 200€, je n’ai jamais rien trouvé /o\
[^] # modèle de ton oscillo à 50€ ?
Posté par rzr (site web personnel) . Évalué à 4.
J'ai ce modele qui fait generateur et analyseur logique:
http://www.gabotronics.com/oscilloscopes/xprotolab-plain.htm
Price: $20.00
gpg:0x467094BC
[^] # Re: Analyseur logique
Posté par Stephane COLIN (site web personnel) . Évalué à 4.
Salut,
J'ai eu besoin de vérifier ma climatisation auto qui ne fonctionnait plus.
En suivant les explications ici : Diagnostique de la climatisation Audi VW Seat Skoda, j'ai eu besoin d'acheter un osciloscope.
Comme je disposait déjà du PC portable qui me sert pour accéder au catalogue des pièces détachées ainsi que les procédures de dépannages, alors j'ai acheté ça : Hantek 6022BE Oscilloscope Digital USB 2 Go Noir/Argent.
Ça oblige d'avoir un PC, mais ça n'est également pas très cher (55€).
Voilà, n'y connaissant rien j'ai pu vérifié tout de même que tout était ok du coté des sondes N280 & G65 en suivant les explications données dans l'article.
A++
[^] # Re: Analyseur logique
Posté par rzr (site web personnel) . Évalué à 2.
Libre, le soft qui va avec Hantek 6022BE Oscilloscope Digital USB ? pas sur
https://www.amazon.fr/gp/product/B00GWHLS5Q/ref=rzr-21#
Support Système d'exploitation Windows: Windows 7 2000/NT/XP/VISTA/Windows, FFT
et qu'en est il du firmware ?
gpg:0x467094BC
# Précisions
Posté par rpnpif . Évalué à 3.
Un bit physique n'est pas toujours un niveau de tension (haut ou bas). Il est défini dans certains systèmes par exemple, des systèmes qui communiquent par radio par une durée différente au niveau haut pour le un par rapport au zéro. Par exemple, on pourrait avoir un valeur zéro pour un niveau de tension à 3V pendant moins de 100 µs. Le valeur un serait défini par 400 µs au niveau de tension haut.
Autre chose. TRÈS IMPORTANT : avant de brancher un oscilloscope sur un appareil, bien vérifier que sa masse n'est pas connectée à la terre comme relativement souvent ou que le point de tension à mesurer est bien isolé du secteur ! Ce n'est pas toujours le cas. Sinon, la carte sera détruite et il y a risque d'électrocution. La solution est d'utiliser un oscilloscope isolé de la terre directement ou bien par un appareil spécial.
Petite erreur de typo : Remplacer « Un capteur ne peux pas » par «Un capteur ne peut pas».
[^] # Re: Précisions
Posté par Benoît Sibaud (site web personnel) . Évalué à 4.
Corrigé, merci.
[^] # Re: Précisions
Posté par pulkomandy (site web personnel, Mastodon) . Évalué à 2.
Un "bit physique" ça ne veut pas dire grand chose. On parle plutôt de "symboles" pour les communications. Ces symboles pouvant comporter plusieurs bits dans certains cas, par exemple, 4 niveaux de tension utilisés pour 00, 01, 11, 10. On trouve souvent cela en communications par ondes radio, avec des modulations comme FSK, QAM, etc.
On trouve encore d'autres encodages sur les disquettes ou disques durs, ainsi que sur les CD-ROM.
[^] # Re: Précisions
Posté par Le Gab . Évalué à 3.
Comment faire chez sois alors? Les Oscilloscopes fournissent un connexion à part pour la mise à terre?
[^] # Re: Précisions
Posté par pulkomandy (site web personnel, Mastodon) . Évalué à 5.
Si tu ne sais pas le faire, il vaut mieux éviter de mesurer des trucs reliés au secteur :)
Le problème se pose quand on mesure quelque chose d'alimenté directement en 220V. Dans ce cas il faut isoler le circuit que l'on mesure à l'aide d'un transformateur d'isolement. Il marche comme une alimentation à transformateur, mais sans faire de conversion de tension (donc il rentre du 220V, et il ressort du 220V).
[^] # Re: Précisions
Posté par Kerro . Évalué à 4.
Le dernier oscillo que j'ai eu entre les mains, c'était en 1995 à peu près. Et jamais je n'ai eu le moindre soucis pour mesurer quoi que ce soit branché sur le secteur. Pourtant c'était un oscillo d'occasion vraiment tout ce qu'il y a de plus ordinaire.
Il avait quelque chose de particulier ?
[^] # Re: Précisions
Posté par rpnpif . Évalué à 4.
Coup de chance. Je vois qu'on aime le risque :)).
Justement à cette époque, la très grande majorité des oscillos courants avaient la masse connectée à la terre, même des oscillos numériques comme ceux de Tektronix. J'en ai encore au boulot dans un coin.
J'ai réellement vu des cartes partir en fumée pour cette raison par des utilisateurs distraits. Je confirme : le risque est réel. Donc bien vérifier son schéma avant de brancher… et son oscillo.
Une autre solution en dehors du transfo d'isolement, c'est la sonde différentielle avec une tension nominale maximale suffisante, souvent 600 V.
[^] # Re: Précisions
Posté par pulkomandy (site web personnel, Mastodon) . Évalué à 2.
Ah oui, je n'ai pas précisé: si on alimente une carte électronique avec un transformateur 220>12v (par exemple), ce dernier joue très bien le rôle de transformateur d'isolement, et en général il n'y a pas de connexion à la terre. Du coup, pas de problème dans ce cas.
# I²C est multi-master
Posté par benoar . Évalué à 7.
Même si ça n'est pas forcément beaucoup utilisé, l'I²C peut être utilisé avec plusieurs maîtres, et donc un capteur pourrait envoyer une alerte. Ça n'est pas géré sous Linux par exemple, qui ne peut que être master sur un bus, mais le protocole l'autorise. J'ai souvenir d'avoir vu des bouts de patchs traîner pour gérer le mode esclave sous Linux, je ne sais pas ce qu'il en est récemment.
[^] # Re: I²C est multi-master
Posté par jmax17 . Évalué à 3.
Oui cela est possible. J'ai réalisé ce genre de montage avec deux µC qui souhaitaient interroger les mêmes capteurs.
En général les capteurs qui communiquent en I2C fournissent un GPIO pour faire une alerte.
Le masteur programme des seuils, quand ces seuils sont atteints ils le signal avec le GPIO qui peut être branchée sur une interruption du masteur.
mais cela fait beaucoup de fils à router
[^] # Re: I²C est multi-master
Posté par benoar . Évalué à 3.
C'est possible sans GPIO supplémentaire, hein : il suffit juste que l'esclave « prenne » la ligne comme un master. Ça marche sans rien de plus.
# Petite question
Posté par max22 . Évalué à 1.
Tant qu'on parle d'oscilloscope j'ai une petite question :
où peut-on trouver une sonde qui puisse mesurer un champ électrique ?
je m'explique : si par exemple j'ai 2 pistes espacées de 1cm sur un circuit imprimé, si j'envoie un signal sinusoidal d'amplitude 1mV, j'aimerais pouvoir observer que le champ électrique à proximité du circuit imprimé est bien un champ électrique sinusoidal de 100mV/m, et le visualiser sur l'oscilloscope.
[^] # Re: Petite question
Posté par jmax17 . Évalué à 0.
une antenne branchée à la sonde ?
j'en ai aucune idée
[^] # Re: Petite question
Posté par BAud (site web personnel) . Évalué à 2.
ou une bobine, en utilisant les courants de Foucault au déplacement de la bobine ? J'en sais rien non plus, juste une idée en l'air :-)
# Quelques inexactitudes
Posté par Selso (site web personnel) . Évalué à 0.
C'est un article assez synthétique, pour les motivés et curieux sans la formation adéquate pour agir seuls.
Concernant le bus i2c, c'est deux fils pour le bus SDA/SCL. Et bien sur les deux interfaces doivent utiliser une masse commune.
Il s'agit surtout d'un bus maître—N esclaves. Chaque interface dispose d'une adresse sur le bus qui est utilisée pour le premier octet émit lors de la requête.
Ce n'est pas faux de dire que le bus est multi-maîtres (on peut changer le mode du contrôleur quand on le souhaite) mais je n'ai jamais vu ce cas d'utilisation. Mais pour que ça marche : à un instant T il y a un seul maître et plusieurs esclaves qui écoutent.
On aurait pu être plus quantitatif et expliquer pourquoi ce type de bus peut être espionné par un oscilloscope , en parlant des bandes passantes et des taux d'échantillonnage des oscilloscopes. Connaître les performances plancher pour espionner des bus ce n'est pas un luxe (surtout que dans les commentaires on parle d'oscilloscope bon marché).
Pour le bus SPI je cite "Pour chaque esclave, nous avons quatre fils ".
Je ne suis par sûr de la formulation. Mais dans la mesure ou l'esclave ,s'il n'est pas sélectionné place ses E/S en haute impédance, il peut partager les lignes du bus avec les autres esclaves.
J'aurai aimé aussi voir un cas pratique de diagnostic d'un problème de communication SPI avec l'oscillo : erreur de réglage du déphasage CPOL/CPHA, erreur réglage taille du mot ou de l'endianness.
Enfin, hormis pour des cas vraiment brouillés, l'usage d'un analyseur logique serait plus indiqué pour observer la comme. D'ailleurs sur la capture l'oscillo propose cette fonctionnalité. Mais ce n'est pas une fonctionnalité 'de série'.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.